import { request } from '@/utils/request'

/**
 * 学生登录
 * @param {Object} data 登录信息
 * @param {string} data.username 用户名/学号
 * @param {string} data.password 密码
 * @param {string} data.captcha 验证码
 * @param {string} data.captchaKey 验证码key
 */
export function login(data) {
  return request.post('/auth/student/login', data)
}

/**
 * 学生注册
 * @param {Object} data 注册信息
 * @param {string} data.studentId 学号
 * @param {string} data.username 用户名
 * @param {string} data.password 密码
 * @param {string} data.confirmPassword 确认密码
 * @param {string} data.realName 真实姓名
 * @param {string} data.phone 手机号
 * @param {string} data.email 邮箱
 * @param {string} data.classId 班级ID
 * @param {string} data.captcha 验证码
 * @param {string} data.captchaKey 验证码key
 */
export function register(data) {
  return request.post('/auth/student/register', data)
}

/**
 * 退出登录
 */
export function logout() {
  return request.post('/auth/student/logout')
}

/**
 * 获取当前学生信息
 */
export function getUserInfo() {
  return request.get('/auth/student/info')
}

/**
 * 刷新token
 * @param {string} refreshToken 刷新token
 */
export function refreshToken(refreshToken) {
  return request.post('/auth/student/refresh', { refreshToken })
}

/**
 * 修改密码
 * @param {Object} data 密码信息
 * @param {string} data.oldPassword 旧密码
 * @param {string} data.newPassword 新密码
 * @param {string} data.confirmPassword 确认新密码
 */
export function changePassword(data) {
  return request.put('/auth/student/password', data)
}

/**
 * 忘记密码 - 发送验证码
 * @param {Object} data
 * @param {string} data.phone 手机号或邮箱
 * @param {string} data.type 类型：phone/email
 */
export function sendResetCode(data) {
  return request.post('/auth/student/reset-code', data)
}

/**
 * 重置密码
 * @param {Object} data
 * @param {string} data.phone 手机号或邮箱
 * @param {string} data.code 验证码
 * @param {string} data.newPassword 新密码
 * @param {string} data.confirmPassword 确认新密码
 */
export function resetPassword(data) {
  return request.post('/auth/student/reset-password', data)
}

/**
 * 验证token有效性
 */
export function validateToken() {
  return request.get('/auth/student/validate')
}

/**
 * 获取验证码
 */
export function getCaptcha() {
  return request.get('/auth/captcha')
}

/**
 * 更新个人信息
 * @param {Object} data 个人信息
 * @param {string} data.realName 真实姓名
 * @param {string} data.phone 手机号
 * @param {string} data.email 邮箱
 * @param {string} data.avatar 头像
 * @param {string} data.gender 性别
 * @param {string} data.birthday 生日
 * @param {string} data.address 地址
 */
export function updateProfile(data) {
  return request.put('/auth/student/profile', data)
}

/**
 * 上传头像
 * @param {File} file 头像文件
 */
export function uploadAvatar(file) {
  return request.upload('/auth/student/avatar', file)
}

/**
 * 绑定手机号
 * @param {Object} data
 * @param {string} data.phone 手机号
 * @param {string} data.code 验证码
 */
export function bindPhone(data) {
  return request.post('/auth/student/bind-phone', data)
}

/**
 * 绑定邮箱
 * @param {Object} data
 * @param {string} data.email 邮箱
 * @param {string} data.code 验证码
 */
export function bindEmail(data) {
  return request.post('/auth/student/bind-email', data)
}

/**
 * 发送手机验证码
 * @param {Object} data
 * @param {string} data.phone 手机号
 * @param {string} data.type 类型：bind/reset/login
 */
export function sendPhoneCode(data) {
  return request.post('/auth/send-phone-code', data)
}

/**
 * 发送邮箱验证码
 * @param {Object} data
 * @param {string} data.email 邮箱
 * @param {string} data.type 类型：bind/reset/login
 */
export function sendEmailCode(data) {
  return request.post('/auth/send-email-code', data)
}

/**
 * 获取学生的班级信息
 */
export function getClassInfo() {
  return request.get('/auth/student/class')
}

/**
 * 获取学生的课程列表
 */
export function getEnrolledCourses() {
  return request.get('/auth/student/courses')
}

/**
 * 获取学习统计信息
 */
export function getLearningStats() {
  return request.get('/auth/student/stats')
}

/**
 * 更新学习偏好设置
 * @param {Object} data 设置信息
 * @param {string} data.theme 主题
 * @param {string} data.language 语言
 * @param {boolean} data.notifications 通知开关
 * @param {boolean} data.autoPlay 自动播放
 * @param {number} data.playbackRate 播放速度
 */
export function updateSettings(data) {
  return request.put('/auth/student/settings', data)
}

/**
 * 获取学习偏好设置
 */
export function getSettings() {
  return request.get('/auth/student/settings')
}

/**
 * 检查学号是否可用
 * @param {string} studentId 学号
 */
export function checkStudentId(studentId) {
  return request.get('/auth/check-student-id', { studentId })
}

/**
 * 检查用户名是否可用
 * @param {string} username 用户名
 */
export function checkUsername(username) {
  return request.get('/auth/check-username', { username })
}

/**
 * 检查手机号是否可用
 * @param {string} phone 手机号
 */
export function checkPhone(phone) {
  return request.get('/auth/check-phone', { phone })
}

/**
 * 检查邮箱是否可用
 * @param {string} email 邮箱
 */
export function checkEmail(email) {
  return request.get('/auth/check-email', { email })
}